package com.medic.service.interf;

import java.util.List;

import com.medic.entity.group.pain.Alert;
import com.medic.entity.group.pain.Medic;

/**
 * 服药提醒业务接口
 * 更新、删除都考虑到数据安全问题，所以对medic的UD操作需要sikerId，对Alert的UD操作者需要根据userId获取的medicId
 * 
 * @author Mr.zhang
 *
 */
public interface MedicServiceInterface extends ServiceInterface<Medic> {
	/**
	 * 保存提醒list集合
	 * 
	 * @param alerts
	 * @param medicId
	 * @return 成功条数
	 * @throws Exception
	 */
	public int saveAlerts(List<Alert> alerts, int medicId) throws Exception;

	/**
	 * 查询所有的服药提醒信息 （用来应用程序启动缓存）
	 * 
	 * @return medic的list集合
	 * @throws Exception
	 */
	public List<Medic> getAll() throws Exception;

	/**
	 * 根据药品id查询服药提醒
	 * 
	 * @param medicId
	 *            药品id
	 * @return alert的list集合
	 * @throws Exception
	 */
	public List<Alert> getAlertByMedicId(int medicId) throws Exception;

	/**
	 * 更新已经存在的提醒（需要alertId、medicId）
	 * 
	 * @param alerts
	 *            提醒的list集合
	 * @param medicId
	 *            药品id
	 * @return 是否成功
	 * @throws Exception
	 */
	public int updateAlerts(List<Alert> alerts, int medicId) throws Exception;

	/**
	 * 删除提醒
	 * 
	 * @param alertId
	 *            提醒id
	 * @param medicId
	 *            药品id（根据sikerId获取的）
	 * @return 成功true
	 * @throws Exception
	 */
	public boolean deleteAlert(int alertId, int medicId) throws Exception;

	/**
	 * 定时提醒患者服药
	 * 
	 * @throws Exception
	 */
	public void informSikerTakeMedic() throws Exception;

}
